Conventional computer architecture, and particularly personal computers (PCs), include a central processing device capable of addressing a predetermined range of memory. This predetermined range of memory is typically referred to as the address space of the central processor. Any devices that are to be addressed by the central processor must respond to an address located within the central processor's address space.
Usually, the address space of a central processor is divided, or partitioned, into two portions. A first portion, sometimes referred to as the main memory block, is used to accommodate random access memory (RAM) of the central processor for temporary storage of data and instructions. A second portion, sometimes referred to as the adapter region or the upper memory block, is used to accommodate various other memory and hardware devices such as read only memory (ROM), video adapters, disk drives, etc. As used herein, and in the art, a particular device is located in the main memory block if the device is responsive to an address falling within the range of addresses for the main memory block and is located in the upper memory block if the device is responsive to an address falling within the range of addresses for the upper memory block. Similarly, a portion of the address space of the central processor is occupied if a device is located in that portion of the address space.
Many central processors include conventional microprocessors wherein the microprocessor, and therefore the central processor, has a 1 megabyte address space. In these devices, 640K of the 1 megabyte range is allocated to the main memory block and is dedicated to random access memory (RAM) for use by the microprocessor for selective storage of data and instructions. The remaining 360K of the 1 megabyte range is allocated to the upper memory block and is used to accommodate other devices to be used with the microprocessor.
To gain full advantage of the entire address space of a central processor, it is often desirable to map random access memory, normally located in the main memory block, into the upper memory block. Conventional programs are available for mapping random access memory into the upper memory block of a central processor. Also, newer processors, such as the Intel 386 and 486 processors, include a paging mode that automatically maps a page of random access memory into the upper memory block, wherein a page of memory is simply a predetermined unit of memory referred to herein as a memory unit.
However, for the central processor to map random access memory into unoccupied regions of the upper memory block, the central processor must first identify which regions are not occupied by devices and/or memory. Conventionally, this is performed by searching each memory location of each memory unit of the adapter region for a predetermined data word, referred to as a signature. The data word, or signature, identifies the memory unit in which it is found as being occupied by a device or read only memory. However, the upper memory block of the central processor's address space is often occupied by read only memory devices that have no signature. This prevents conventional central processors from locating these devices and, therefore, may result in a device being mapped to an occupied portion of the upper memory block. Such mapping can cause the computer system to crash or may cause unstable performance. Accordingly, it is desirable to provide a method for identifying occupied memory units of a central processor's address space, without relying upon the presence of a predetermined data word, or signature, in the occupied memory units.